namespace Microsoft.WowAddonStudio.Lua.RuntimeService.WowBench
{
	/// <summary>
	/// Represents a shell command.
	/// </summary>
	public interface ICommandEntry : INavigable<ICommandEntry>
	{
		/// <summary>
		/// Gets the enabled state of the command.
		/// </summary>
		bool Enabled{ get; set; }

		/// <summary>
		/// Executes WoWBench command with <see cref="IWoWBenchCommandHandler"/>.
		/// </summary>
		string Execute();

		/// <summary>
		/// Clears all command from buffer.
		/// </summary>
		void Clear();

		/// <summary>
		/// Gets the associated command.
		/// </summary>
		/// <returns>The valid command text.</returns>
		string GetCommand();

		/// <summary>
		/// Add a new command to the object.
		/// </summary>
		/// <param name="command">The command text.</param>
		void Add(string command);

	}
}